﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.Linq;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace SpaceRivals
{
    public partial class premiere_connexion : System.Web.UI.Page
    {
        cGeneric generic = new cGeneric();

        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            DBSpaceRivalsDataContext DB = new DBSpaceRivalsDataContext();

            var query = from societe in DB.TSOCIETE_D_INVESTISSEMENT
                        where societe.NOMSOCIETE == TextBox_nomSociete.Text
                        select societe;

            if (TextBox_nomSociete.Text != "")
            {
                if (query.Count() == 0)
                {
                    if (TextBox_Parrainage.Text != "")
                    {
                        if (ExisteParrain(TextBox_Parrainage.Text))
                            CreerSociete(TextBox_nomSociete.Text, TextBox_Parrainage.Text, DropDownList_spec.SelectedItem.Value);
                        else
                            Label_erreurParrainage.Text = "Pseudo inexistant";                        
                    }
                    else CreerSociete(TextBox_nomSociete.Text, "", DropDownList_spec.SelectedItem.Value);
                }
                else Label_erreurSociete.Text = "Ce nom de societe existe déjà !";
            }
            else Label_erreurSociete.Text = "Entrez un nom de société";

        }

        private bool CreerSociete(string unNomSociete, string unPseudoParrain, string uneSpec)
        {
            DBSpaceRivalsDataContext DB = new DBSpaceRivalsDataContext();
            /*var query = from joueur in DB.TJOUEUR
                        where joueur.IDJOUEUR == Page.Session["IdJoueur"].ToString()
                        select joueur;*/

            try
            {
                TSOCIETE_D_INVESTISSEMENT societe = new TSOCIETE_D_INVESTISSEMENT()
                {
                    IDSOCIETE = generic.GenererId(typeof(TSOCIETE_D_INVESTISSEMENT)),
                    IDJOUEUR = Page.Session["IdJoueur"].ToString(),
                    ACTIFSSOCIETE = 0,
                    CROISSANCESOCIETE = 0,
                    NOMBRECONTRATSSIGNESSOCIETE = 0,
                    NOMBRECONTRATSREUSSISSOCIETE = 0,
                    NOMSOCIETE = unNomSociete,
                    POINTSSOCIETE = 0,
                    SOCIETEACTIVE = true,
                    VALEURBOURSIERESOCIETE = 0
                };

                TSPECIALISATIONSOCIETE spec = new TSPECIALISATIONSOCIETE()
                {
                    IDSPECIALISATIONSOCIETE = generic.GenererId(typeof(TSPECIALISATIONSOCIETE)),
                    LIBELLESPECIALISATIONSOCIETE = uneSpec
                };

                TMODIFICATEURSSOCIETE mod = new TMODIFICATEURSSOCIETE()
                {
                    IDMODIFICATEURSOCIETE = generic.GenererId(typeof(TMODIFICATEURSSOCIETE)),
                    IDSOCIETE = societe.IDSOCIETE,
                    IDSPECIALISATIONSOCIETE = spec.IDSPECIALISATIONSOCIETE,
                    MODIFICATEURRELATIONSBANQUES = 1,
                    MODIFICATEURRENOMEESOCIETE = 1
                };

                /*// Modification du joueur pour ajouter le pseudo parrain
                foreach (TJOUEUR resultat in query)
                {
                    resultat.PSEUDOPARRAIN = unPseudoParrain;
                }*/

                // Si un parrain est identifié, on créé un message
                if (unPseudoParrain != "")
                  CreerDemandeParrainage(unPseudoParrain);

                DB.TSOCIETE_D_INVESTISSEMENT.InsertOnSubmit(societe);
                DB.TSPECIALISATIONSOCIETE.InsertOnSubmit(spec);
                DB.TMODIFICATEURSSOCIETE.InsertOnSubmit(mod);
                DB.SubmitChanges();

            }
            catch {
                Label_erreurSociete.Text = "Erreur à la création de votre société";
                return false;
            }
            return true;   
        }

        private void CreerDemandeParrainage(string unPseudoParrain)
        {
            DBSpaceRivalsDataContext DB = new DBSpaceRivalsDataContext();
            var query = from joueur in DB.TJOUEUR
                                    where joueur.IDJOUEUR == Page.Session["IdJoueur"].ToString()
                                    select joueur;
            var query2 = from joueur in DB.TJOUEUR
                                    where joueur.PSEUDOJOUEUR == unPseudoParrain
                                    select joueur;
            try
            {
                foreach (TJOUEUR resultat2 in query2)
                {
                    foreach (TJOUEUR resultat in query)
                    {
                        TPERSO Demande = new TPERSO()
                        {
                            IDMESSAGE = generic.GenererId(typeof(TPERSO)),
                            IDJOUEUR = resultat2.IDJOUEUR,
                            OBJETMESSAGE = "Demande de parrainage de " + resultat.PSEUDOJOUEUR,
                            CONTENUMESSAGE = unPseudoParrain + ", " + "\n" + "\r" +
                                             "Un nouvel arrivant vient de solliciter votre parrainage ! " + "\n" + "\r" +
                                             "En effet, " + resultat.PSEUDOJOUEUR + " a entré votre pseudo lors de la création de sa société.",
                            REPONSEEXIGEE = true,
                            LIENLOCALMESSAGE = "",
                            DATEENVOIMESSAGE = DateTime.Now,
                            MESSAGEENVOYE = true,
                            MESSGELU = false,
                            EXPEDITEURMESSAGE = resultat.IDJOUEUR
                        };

                        DB.TPERSO.InsertOnSubmit(Demande);
                        DB.SubmitChanges();
                    }
                }
            }
            catch { }
        }


        private bool ExisteParrain(string unPseudo)
        {
            DBSpaceRivalsDataContext DB = new DBSpaceRivalsDataContext();

            var query = from joueur in DB.TJOUEUR
                        where joueur.PSEUDOJOUEUR == unPseudo
                        select joueur;

            if (query.Count() == 0)
                return false;
            else
                return true;
      
        }
     
    }
}
